#pragma once

#define BIT_SET_27          0x07FFFFFF
#define BIT_SET_30          0x3FFFFFFF
#define Zhoucol 0x40201


typedef unsigned short int  USHORT;
typedef unsigned int UINT;
typedef unsigned long ULONG;
typedef unsigned char UCHAR;
typedef unsigned char byte;
typedef unsigned short word;


// candidate 7bits cells + digit * 128 
typedef unsigned short int  UCAND;
// UCAND + status off bit 12 set to 1
typedef unsigned short int  SCAND;
// UCAND + (<<11)  unit or 27 if cell
typedef unsigned short int  RCAND;

/* class encapsulating processing for puzzles solving
   uses directly bits from command through enum
   char * template_c = "....|...._....|...._....|....-....|...._....|...._....|...._....|";
enum indexbit{op_noprint=5,op_norem, 
	  opAB_skip2=5,opAB_lim4,opAB_URs,
      op_basic=10,op_noextra,op_notagging,op_stop_after_BBSK,
      opn_lock=15,opn_ec,opn_xw,opn_xy,
	  opn_xyz=20,opn_ur,opn_ul,opn_bug,
	  opn_lv0=25,opn_lvl1,opn_abfish,opn_abiflock,
	  opn_sym=30,opn_sk,opn_bb,
	  opn_sets=35
};
*/

	